<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <link rel="stylesheet" href="/static/searchPage/judge.css">
    <script src="/static/searchPage/jquery.min.js"></script>
    <script src="/static/searchPage/common.js"></script>
    <script src="/static/searchPage/component.js"></script>
    <title>招生信息查询</title>
    <style type="text/css">
        .hint{
            float: right;
            background-color: #0c9463;
            height: 25px;
            line-height: 25px;
            display: inline-block;
            width: 75px;
            text-align: center;
            color: white;
            font-weight: 600;
            border-radius: 6px;
            margin-right: 10px;
        }
    </style>
</head>
<body>
<div class="header">
    <div onclick="javascript:history.go(-1)">
        <img src="/static/searchPage/images/top-icon-left.png" alt="">
    </div>
    <div class="header-title"><p>历年分数参考</p></div>
    <div>
        <img src="/static/searchPage/images//top-icon.png" alt="">
    </div>
</div>
<p style="margin-left: 10%;color: rgba(0,0,0,0.5);">当前可免费搜索<span style="color: #E8BF6A"> {$freeNum} </span>次 <span class="hint" id="hint">提示信息</span></p>
<form class="middle" id="form">

    <h4>年份选择</h4>
    <div class="select-box">
        <select name="year" id="year">
            <option value="-1">请选择</option>
            {volist name="yearList" id="vo"}
            <option value="{$vo['attr_id']}">{$vo['attr_name']}</option>
            {/volist}
        </select>
    </div>

    <h4>地区选择</h4>
    <div class="select-box">
        <select name="location" id="location">
            <option value="-1">请选择</option>
            {volist name="locationList" id="vo"}
            <option value="{$vo['attr_id']}">{$vo['attr_name']}</option>
            {/volist}
        </select>
    </div>


    <h4>学校代码（完整）</h4>
    <input type="number" name="slo_school_code" placeholder="请输入完整学校代码" id="slo_school_code">
    <h4>学校名称</h4>
    <input type="text" name="slo_school_name" placeholder="请输入学校名称" id="slo_school_name">


    <h4>专业代码（完整）</h4>
    <input type="number" name="slo_profession_code" placeholder="请输入完整换专业代码" id="slo_profession_code">
    <h4>专业名称</h4>
    <input type="text" name="slo_profession_name" placeholder="请输入专业名称" id="slo_profession_name">

    <h4>最低分数线</h4>
    <input type="number" name="slo_grade_min" placeholder="请输入最低分数线" id="slo_grade_min">
    <h4>最高分数线</h4>
    <input type="number" name="slo_grade_max" placeholder="请输入最高分数线" id="slo_grade_max">

    <h4>最小位次号</h4>
    <input type="number" name="slo_position_min" placeholder="请输入最小位次号" id="slo_position_min">
    <h4>最大位次号</h4>
    <input type="number" name="slo_position_max" placeholder="请输入最大位次号" id="slo_position_max">
</form>
</div>

<button class="big-btn" id="search">发起查询</button>

</body>
<script type="text/javascript">
    //跳转提示页面
    $("#hint").click(function(){
        let url="{:url('search/Index/showHint')}";
        window.location.href=url;
        return false;
    });


    //监听事件
    $("#search").click(function () {


        //判断用户输入数据是否太少
        if(!checkDataNum()){
            return false;
        }



        //检查报告是否存在
        if (!checkIsset()) {
            return false;
        }


        //判断用户是否能够免费查询
        //当函数的返回值未true时，将不会再执行下去
        if(checkFreeGet()){
            //如果能够免费查询，就不进行后面的支付流程了
            return false;
        }

        //判断该搜索条件是否已经付费过
        //并进行完整流程
        checkSearch();
    })


</script>

<script type="text/javascript">
    //判断用户是否可以免费查询
    //以及是否已经免费搜索过相同的条件，如果免费搜索过且时间未过期，则直接跳转到列表显示页面
    function checkFreeGet(){
        //先判断当前的搜索条件是否被免费搜索过，并且搜索还未失效
        let formData = $("#form").serialize();
        let result = makeRequest("{:url('search/Index/checkFreeGet')}", formData);
        if(result.code===1){
            //用户能够直接免费查看该条件
            window.location.href=result.url;
            return true;
        }


        //下面的流程时用户可能要花费免费的次数来搜索条件（这是当用户有免费搜索的机会；如果用户连免费搜索的机会都没有，就走到支付流程上去了）
        // 看用户是否还有剩余的免费搜索次数来搜索该条件
        let result2=makeRequest("{:url('search/Index/isHasFreeNum')}");
        let freeNum=result2.data;

        //有免费的查询次数，return true，不进行后面的支付操作
        //没有免费的查询次数，return false, 仍要进行后面的支付操作
        if(result2.code===1){
            //有免费查询的次数
            showConfirm("选择", "是否愿意使用免费机会查询该记录？（当前剩余"+freeNum+"次）", [{
                text: "愿意",
                callback: function (instance) {
                    //向后台发起请求，创建免费查询记录，返回相应订单后跳转到信息显示页面
                    createFreeLog();
                }
            }, {
                text: '再等等',
                callback: function () {
                }
            }])
            return true;
        }
        else{
            return false;
        }
    }



    //产生免费查询的记录，并返回订单号，并跳转到相应的数据显示页面
    function createFreeLog(){
        let formData = $("#form").serialize();
        let result = makeRequest("{:url('search/Index/createFreeLog')}", formData);
        if(result.code===1){
            //查询记录创建成功，跳转到信息列表显示页面
            window.location.href=result.url;
        }else{
            Toast(result);
        }
        return false;
    }



    //判断用户是否什么都不填,约束用户一定要填写一些条件
    function checkDataNum(){
        //限制用户一定要选择年份和地区
        let year=$("#year").val();
        let location=$("#location").val();
        if(year==="-1"){
            Toast("请选择年份");
            return false;
        }
        if(location==="-1"){
            Toast("请选择地区");
            return false;
        }





        //限制用户一定要填写一些数据
        let slo_school_name=$("#slo_school_name").val();
        let slo_school_code=$("#slo_school_code").val();
        let slo_profession_name=$("#slo_profession_name").val();
        let slo_profession_code=$("#slo_profession_code").val();
        let slo_grade_min=$("#slo_grade_min").val();
        let slo_grade_max=$("#slo_grade_max").val();
        let slo_position_min=$("#slo_position_min").val();
        let slo_position_max=$("#slo_position_max").val();

       if(slo_school_name||slo_school_code||slo_profession_name||slo_profession_code||
       slo_grade_min||slo_grade_max||slo_position_min||slo_position_max){
           return true;
       }else{
           Toast("请至少填写一项数据");
           return false;
       }


    }


    //判断用户所输入的代码是否有对应的数据报告
    function checkIsset() {
        let formData = $("#form").serialize();

        let result = makeRequest("{:url('search/Index/checkIsset')}", formData);
        if (result.code !== 1) {
            Toast(result.msg,1500);
            return false;
        } else {
            return true;
        }
    }

    //判断用户是否支付过相应的搜索条件
    function checkSearch(){
        let formData = $("#form").serialize();
        let result = makeRequest("{:url('search/Index/checkSearch')}", formData);
        if (result.code !== 1) {
            //如果未查 or 过期，重新支付
            let web_download_fee = {$web_search_fee}; //要付款金额
            showConfirm("选择", "是否愿意支付" + web_download_fee + "元查询该记录吗？", [{
                text: "愿意",
                callback: function (instance) {
                    getPayParams();
                }
            }, {
                text: '再等等',
                callback: function () {
                }
            }])
        } else {
            //已搜索并成功支付过
            //返回的结果中包含所要搜索条件下的订单号，
            //可凭借该订单号获取数据
            window.location.href =  result.url;
            return false;
        }
    }

    //判断用户是否下载过相应的报告
    function checkDownload() {
        let formData = $("#form").serialize();
        let result = makeRequest("{:url('index/Common/checkDownload')}", formData);
        if (result.code !== 1) {
            //如果未下载过
            let web_download_fee = {$web_search_fee}; //要付款金额
            showConfirm("选择", "是否愿意支付" + web_download_fee + "元下载该报告吗？", [{
                text: "愿意",
                callback: function (instance) {
                    getPayParams();
                }
            }, {
                text: '再等等',
                callback: function () {
                }
            }])
        } else {
            //已下载过
            //返回的结果中包含所要下载的文件的订单号，
            //凭借该订单号，可直接定位并下载文件
            window.location.href =  result.url;
            return false;
        }
    }

    //发起支付请求，像后端要支付数据，拉起支付页面
    //一旦发起请求，即表中已经存在了这条下载记录，只是付款状态为未下载
    function getPayParams() {
        let formData = $("#form").serialize();
        let result = makeRequest("{:url('search/Index/getPayParams')}", formData);
        if (result.code === 1) {
            //支付参数获取成功
            //页面吊起支付，如果支付成功，则在回调处理的方法中，修改这笔下载记录的付款状态
            callpay(result);
        } else {
            Toast("支付参数获取异常"+result.msg);
            return false;
        }
    }

    //发起请求，返回请求到的数据
    function makeRequest(url, data) {
        let result;
        $.ajax({
            url: url,
            type: "post",
            dataType: "json",
            data: data,
            async: false,
            success: function (res) {
                result = res;
            }
        })
        return result;
    }

    //Toast
    function showConfirm(title, content, btnsData) {
        let confirm = new ConfirmClass();
        confirm.onShow = function () {
            console.log('');
            console.log('')
        };
        confirm.onHide = function () {
            console.log('')
        };
        // 这里可以自定义
        confirm.show({
            title: title,
            content: content,
            // btns: [{
            //     text: "需要",
            //     callback: function (instance) {
            //         // instance.close = false;
            //         console.log('点击了确定按钮，但不会关闭弹窗');
            //     }
            // }, {
            //     text: '不需要',
            //     callback: function () {
            //         console.log('点击了不需要按钮');
            //     }
            // }],
            btns: btnsData,
            onShow: function () {
                console.log('打开了confirm')
            }
        })
    }


    //loading 效果
    function loading() {
        let toast = new ToastClass();
        toast.show({
            loading: true,
            onshow: function () {
            }
        });
        //返回值用于关闭Toast
        return toast;
    }

    //不断请求接口，查看相应的标志文件是否存在
    function checkTagsExists(slo_wechat_code) {
        let url = "{:url('search/Index/checkTagsExists')}?slo_wechat_code="+slo_wechat_code;
        let result =  makeRequest(url);
        //如果code===1，表示标识文件存在
        //标识文件存在，说明未支付成功
        return result.code===1;
    }


</script>
<script type="text/javascript">
    //存放支付操作
    //页面调起支付面板


    function callpay(result) {
        if (typeof WeixinJSBridge == "undefined") {
            if (document.addEventListener) {
                document.addEventListener('WeixinJSBridgeReady', jsApiCall, false);
            } else if (document.attachEvent) {
                document.attachEvent('WeixinJSBridgeReady', jsApiCall);
                document.attachEvent('onWeixinJSBridgeReady', jsApiCall);
            }
        } else {
            jsApiCall(result);
        }
    }


    //调用微信JS api 支付
    //支付操作的主要函数
    function jsApiCall(result) {
        let payData = JSON.parse(result.data);
        let url = result.url;
        //获取订单号，判断支付标识文件时有用
        let slo_wechat_code=result.wait;
        WeixinJSBridge.invoke(
            'getBrandWCPayRequest',
            payData,
            function (res) {
                if (res.err_msg === "get_brand_wcpay_request:ok") {
                    //支付成功，流程
                    /*
                    * 1. 显示Toast()
                    * 2. 请求后台数据，查看服务器指定目录下的支付标识文件是否存在
                    * 3. 如果存在说明该订单尚未支付成功，一直加载loading
                    * 4. 如果标识文件不存在，则说明支付成功，跳转到下载控制器中。在该控制器中，直接校验支付参数为success的记录
                    * */

                    let isExists=true; //标识文件是否存在
                    let loadingObj = loading(); //显示Loading，直到请求到支付成功的结果(标识文件不存在了)

                    //反复检查是否标识文件是否存在
                    let intervalId=setInterval(function(){
                        isExists=checkTagsExists(slo_wechat_code);
                        if(!isExists){
                            //如果支付标识文件不存在，说明已经支付成功，消除loading，并进行跳转
                            loadingObj.hide(); //消除loading
                            //关闭循环
                            window.location.href = url;
                            //跳转到下载页面，在微信端直接打开内置浏览器进行下载
                            window.clearInterval(intervalId);
                        }
                    },1000);
                    //保险起见，在15秒后，刷新页面，重启流程
                    setTimeout(function(){
                        window.clearInterval(intervalId);
                        window.location.href="{:url('index/Common/downloadReport')}";
                    },15000);
                } else {
                    Toast("缴费失败");
                }
            }
        );
    }
</script>
</html>